CREATE FUNCTION [dbo].[FN_FACTURA_DIRECTA] (@checkpointId bigint,@sociedadId int,@numeroPedido varchar(30))
RETURNS numeric
AS
BEGIN
	DECLARE @result AS numeric;
    DECLARE @r_count AS numeric;
    DECLARE @r_numeroPedido AS varchar(30);
    DECLARE @r_numeroDocumentoCompra AS varchar(20);
    DECLARE @r_posicion AS varchar(5);
	
	
	  DECLARE c_documentos CURSOR
		  LOCAL FAST_FORWARD
		FOR
		SELECT DISTINCT
            CP.NUMERO_DOCUMENTO_COMPRA as numeroPedido,
            CP.NUMERO_DOCUMENTO as numeroDocumentoCompra,
            CP.POSICION as posicion
        FROM
            [dbo].[SGTM_OPERACION_CUENTA] CP
            WHERE 
                CP.CHECKPOINT_ID =@checkpointId
                and CP.SOCIEDAD_ID =@sociedadId
                and CP.NUMERO_DOCUMENTO_COMPRA =@numeroPedido
                and  SUBSTRING (CP.NUMERO_DOCUMENTO,1,2)= '20' 
        ORDER BY CP.POSICION

set @result=0;
	
	
    OPEN c_documentos;

    FETCH NEXT FROM c_documentos
    INTO
      @r_numeroPedido,@r_numeroDocumentoCompra,@r_posicion;
      
    WHILE @@FETCH_STATUS = 0
    BEGIN

		SELECT @r_count= count(*)
        FROM
            [dbo].[SGTM_OPERACION_CUENTA] CP
            WHERE 
                CP.CHECKPOINT_ID =@checkpointId
                and CP.SOCIEDAD_ID =@sociedadId
                and CP.NUMERO_DOCUMENTO_COMPRA =@numeroPedido
                and CP.POSICION = @r_posicion
                and  SUBSTRING (CP.NUMERO_DOCUMENTO,1,2)= '60' ;

					if (@r_count =  0 ) -- la provision no tiene factura asociada a la posicion
						begin
							set @result = @result+1;
						end

		
		
      FETCH NEXT FROM c_documentos
      INTO @r_numeroPedido,@r_numeroDocumentoCompra,@r_posicion;
    end;  

   
   return @result;
END